package com.avengers.core.model;

import com.avengers.core.bean.enums.SymbolEnum;

/**
 * @author yu.wang
 * @since 2018-04-05 下午4:22
 */
public interface DbColumn {
    /**
     * 枚举name
     *
     * @return column name
     */
    String name();

    /**
     * 是否转义 成 `column` 样式
     * 默认转义
     */
    default boolean isEscape() {
        return true;
    }

    default String sqlColumn() {
        String columnName = name();
        if (!isEscape()) {
            return columnName;
        }
        if (columnName.contains(SymbolEnum.space.string)
                || columnName.contains(SymbolEnum.parenLeft.string)) {
            return columnName;
        }
        return SymbolEnum.sqlQuotes + columnName + SymbolEnum.sqlQuotes;
    }
}
